﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using SIM.Geo.BE;
using System.Linq;

namespace SIM.Geo.DA
{
    public class DALitologiaAlteraciones: Base
    {
        #region Metodos

        /// <summary>
        /// Devuelve la lista de LitologiaAlteraciones 
        /// </summary>
        /// <returns></returns>
        public List<LitologiaAlteraciones> ListarLitologiaAlteraciones(int codigoSondaje, string codigoLitologia)
        {
            return this.Context.LitologiaAlteraciones.Where(x => x.CodigoSondaje == codigoSondaje && x.CodigoLitologia == codigoLitologia).ToList();
        }

        /// <summary>
        /// Devuelve la lista de LitologiaAlteraciones 
        /// </summary>
        /// <returns></returns>
        public List<LitologiaAlteracionesResponse> BuscarLitologiaAlteraciones(int codigoSondaje, string codigoLitologia)
        {
            return this.Context.LitologiaAlteraciones.Where(x => x.CodigoSondaje == codigoSondaje && x.CodigoLitologia == codigoLitologia)
                .Select(x => new LitologiaAlteracionesResponse {
                    Orden = x.Orden,
                    CodigoGradoFracturacion = x.CodigoGradoFracturacion,
                    CodigoSondaje = x.CodigoSondaje,
                    CodigoLitologia = x.CodigoLitologia,
                    CodigoTipoAlteracionLitologica = x.CodigoTipoAlteracionLitologica,
                    DescripcionTipoAlteracion = x.TipoAlteracionLitologica.Descripcion,
                    DescripcionGradoFracturacion = x.GradoFracturacion.Descripcion 
                }
                ).ToList();
        }

        /// <summary>
        /// Registra nuevo LitologiaAlteraciones 
        /// </summary>
        /// <param name="Litologia"></param>
        /// <returns></returns>
        public void InsertarLitologiaAlteraciones(LitologiaAlteraciones litologiaAlteraciones)
        {
            this.Context.LitologiaAlteraciones.AddObject(litologiaAlteraciones);
            this.Context.SaveChanges();

        }

        /// <summary>
        /// Eliminar un LitologiaAlteraciones 
        /// </summary>
        /// <param name="Litologia"></param>
        public void EliminarLitologiaAlteraciones(LitologiaAlteraciones litologiaAlteraciones)
        {
            this.Context.LitologiaAlteraciones.Attach(litologiaAlteraciones);
            this.Context.ObjectStateManager.ChangeObjectState(litologiaAlteraciones, EntityState.Deleted);
            this.Context.SaveChanges();

        }

        /// <summary>
        /// Obtiener un LitologiaAlteraciones 
        /// </summary>
        /// <param name="Litologia"></param>
        public LitologiaAlteraciones ObtenerLitologiaAlteraciones(int codigoTipoAlteracionLitologica, int codigoSondaje, string codigoLitologia)
        {
            return this.Context.LitologiaAlteraciones.Where(x => x.CodigoTipoAlteracionLitologica == codigoTipoAlteracionLitologica && x.CodigoSondaje == codigoSondaje && x.CodigoLitologia == codigoLitologia).FirstOrDefault();
        }
        #endregion
    }
}
